#include <cstdio>
#include <cstring>
#include <memory.h>

int n, m, p;
int Aleft, Aright, Bleft, Bright, A, B;
int safe[ 210 ];
bool wineleft, wineright, poisonleft, poisonright, back[ 210 ], ahead[ 210 ];
bool impossible, more;
bool f[ 210 ][ 101 ][ 2 ][ 2 ][ 4 ];
bool visit[ 210 ][ 101 ][ 2 ][ 2 ][ 4 ];

void init( )
{
    char clue[ 20 ], clue1[ 20 ], clue2[ 20 ], clue3[ 20 ], tmp[ 20 ];
    int num;
    impossible = wineleft = wineright = poisonleft = poisonright = false;
    Aleft = Aright = Bleft = Bright = 0;
    memset( safe, 0, sizeof( safe ) );
    memset( ahead, 0, sizeof( ahead ) );
    memset( back, 0, sizeof( back ) );
    while ( p-- )
    {
        scanf("%s", clue);
        if ( clue[ 0 ] == 'A' )
        {
            scanf("%s%s%s%s%s%s%s%s", clue1, tmp, tmp, clue2, tmp, tmp, clue3, tmp);
            if ( clue1[ 0 ] == 'w' )
            {
                if ( clue2[ 0 ] == 'p' )
                {
                    if ( clue3[ 0 ] == 'l' )
                        wineleft = true;
                    else
                        wineright = true;
                }
                else
                    if ( n )
                        impossible = true;
            }
            else
            {
                if ( clue2[ 0 ] == 'w' )
                {
                    if ( clue3[ 0 ] == 'l' )
                        poisonleft = true;
                    else
                        poisonright = true;
                }
                else
                    if ( m )
                        impossible = true;
            }
        }
        if ( clue[ 0 ] == 'T' )
        {
            scanf("%s%s%s%s%s%s%s%s%s%s%s%s%s%s", clue1, tmp, tmp, clue2, tmp, tmp, tmp, tmp, tmp, clue3, tmp, tmp, tmp, tmp);
            if( clue1[ 0 ] == 'A' )
            {
                if ( clue2[ 0 ] == 'w' )
                {
                    if ( Aleft != 1 && Aleft )
                        impossible = true;
                    Aleft = 1;
                }
                else
                    if ( clue2[ 0 ] == 'p' )
                    {
                        if ( Aleft != 2 && Aleft )
                            impossible = true;
                        Aleft = 2;
                    }
                    else
                        if ( clue2[ 0 ] == 'B' )
                        {
                            if ( Aleft != 3 && Aleft )
                                impossible = true;
                            Aleft = 3;
                        }
                        else
                            impossible = true;
                if ( clue3[ 0 ] == 'w' )
                {
                    if ( Aright != 1 && Aright )
                        impossible = true;
                    Aright = 1;
                }
                else
                    if ( clue3[ 0 ] == 'p' )
                    {
                        if ( Aright != 2 && Aright )
                            impossible = true;
                        Aright = 2;
                    }
                    else
                        if ( clue3[ 0 ] == 'B' )
                        {
                            if ( Aright != 3 && Aright )
                                impossible = true;
                            Aright = 3;
                        }
                        else
                            impossible = true;
            }
            else
            {
                if ( clue2[ 0 ] == 'w' )
                {
                    if ( Bleft != 1 && Bleft )
                        impossible = true;
                    Aleft = 1;
                }
                else
                    if ( clue2[ 0 ] == 'p' )
                    {
                        if ( Bleft != 2 && Bleft )
                            impossible = true;
                        Bleft = 2;
                    }
                    else
                        if ( clue2[ 0 ] == 'B' )
                        {
                            if ( Aleft != 3 && Bleft )
                                impossible = true;
                            Bleft = 3;
                        }
                        else
                            impossible = true;
                if ( clue3[ 0 ] == 'w' )
                {
                    if ( Bright != 1 && Bright )
                        impossible = true;
                    Bright = 1;
                }
                else
                    if ( clue3[ 0 ] == 'p' )
                    {
                        if ( Bright != 2 && Bright )
                            impossible = true;
                        Bright = 2;
                    }
                    else
                        if ( clue3[ 0 ] == 'B' )
                        {
                            if ( Bright != 3 && Bright )
                                impossible = true;
                            Bright = 3;
                        }
                        else
                            impossible = true;
            }
        }
        if ( clue[ 0 ] == 'N' )
        {
            scanf("%d%s%s%s%s%s", &num, tmp, clue2, tmp, clue3, tmp);
            if ( num > n + m + 2 || num < 1 )
                impossible = true;
            if ( tmp[ 0 ] == '.' )
            {
                if ( clue2[ 0 ] == 'l' )
                {
                    if ( clue3[ 0 ] == 's' )
                    {
                        if ( safe[ num ] == 2 )
                            impossible = true;
                        safe[ num ] = 1;
                    }
                    else
                    {
                        if ( safe[ num ] == 1 )
                            impossible = true;
                        safe[ num ] = 2;
                    }
                }
                else
                {
                    if ( clue3[ 0 ] == 's' )
                    {
                        if ( safe[ n + m + 3 - num ] == 2 )
                            impossible = true;
                        safe[ n + m + 3 - num ] = 1;
                    }
                    else
                    {
                        if ( safe[ n + m + 3 - num ] == 1 )
                            impossible = true;
                        safe[ n + m + 3 - num ] = 2;
                    }
                }
            }
            else
            {
                scanf("%s%s", clue1, tmp);
                if ( clue2[ 0 ] == 'l' )
                {
                    if ( clue1[ 0 ] == 'a' )
                        ahead[ num ] = true;
                    else
                        back[ num ] = true;
                }
                else
                {
                    if ( clue1[ 0 ] == 'a' )
                        ahead[ n + m + 3 - num ] = true;
                    else
                        back[ n + m + 3 - num ] = true;
                }
            }
        }
    }
}

void work( )
{
    int i, j;
    memset( f, 0, sizeof( f ) );
    if ( safe[ 1 ] == 0 )
    {
        if ( ( !wineleft ) && n )
            f[ 1 ][ 1 ][ 0 ][ 0 ][ 0 ] = 1;
        if ( ( !poisonleft ) && m )
            f[ 1 ][ 0 ][ 0 ][ 0 ][ 1 ] = 1;
        if ( ( !ahead[ 1 ] ) && ( !Aleft ) )
            f[ 1 ][ 0 ][ 1 ][ 0 ][ 2 ] = 1;
        if ( ( !back[ 1 ] ) && ( !Bleft ) )
            f[ 1 ][ 0 ][ 0 ][ 1 ][ 3 ] = 1;
    }
    if ( safe[ 1 ] == 1 )
    {
        if ( !wineleft )
            f[ 1 ][ 1 ][ 0 ][ 0 ][ 0 ] = 1;
        if ( ( !ahead[ 1 ] ) && ( !Aleft ) )
            f[ 1 ][ 0 ][ 1 ][ 0 ][ 2 ] = 1;
        if ( ( !back[ 1 ] ) && ( !Bleft ) )
            f[ 1 ][ 0 ][ 0 ][ 1 ][ 3 ] = 1;
    }
    if ( safe[ 1 ] == 2 )
        if ( !poisonleft )
            f[ 1 ][ 0 ][ 0 ][ 0 ][ 0 ] = 1;
    for ( i = 2; i <= n + m + 2; i++ )
    {
        for ( j = 0; j <= n && j <= i; j++ )
        {
            if ( safe[ i ] == 0 )
            {
                if ( j )
                {
                    if ( !wineleft )
                    {
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 0 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 1 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 1 ][ 0 ];
                            f[ i ][ j ][ 0 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 0 ][ 0 ];
                        }
                        if ( Aright == 1 || Aright == 0 )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 0 ][ 2 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 1 ][ 2 ];
                        }
                        if ( Bright == 1 || Bright == 0 )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 1 ][ 3 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 1 ][ 3 ];
                        }
                    }
                    f[ i ][ j ][ 0 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 0 ][ 1 ];
                    f[ i ][ j ][ 1 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 0 ][ 1 ];
                    f[ i ][ j ][ 0 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 1 ][ 1 ];
                    f[ i ][ j ][ 1 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 1 ][ 1 ];
                }
                if ( j != i )
                {
                    if ( !poisonleft )
                    {
                        if ( !poisonright )
                        {
                            if ( m >= i - j - 1 )
                            {
                                f[ i ][ j ][ 1 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 1 ];
                                f[ i ][ j ][ 0 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 1 ];
                            }
                            if ( m >= i - j - 2 )
                                f[ i ][ j ][ 1 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 1 ][ 1 ];
                            if ( m >= i - j )
                                f[ i ][ j ][ 0 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                        }
                        if ( Aright == 2 || Aright == 0 )
                        {
                            if ( m >= i - j - 1 )
                                f[ i ][ j ][ 1 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 2 ];
                            if ( m >= i - j - 2 )
                                f[ i ][ j ][ 1 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 1 ][ 2 ];
                        }
                        if ( Bright == 2 || Bright == 0 )
                        {
                            if ( m >= i - j - 1 )
                                f[ i ][ j ][ 0 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 3 ];
                            if ( m >= i - j - 2 )
                                f[ i ][ j ][ 1 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 1 ][ 3 ];
                        }
                    }
                    if ( m >= i - j )
                        f[ i ][ j ][ 0 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                    if ( m >= i - j - 1 )
                    {
                        f[ i ][ j ][ 1 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 0 ];
                        f[ i ][ j ][ 0 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 0 ];
                    }
                    if ( m >= i - j - 2 )
                        f[ i ][ j ][ 1 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 1 ][ 0 ];
                    if ( Aleft == 0 && ( !ahead[ i ] ) )
                    {
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 0 ];
                        }
                        if ( !poisonright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 1 ];
                        }
                        if ( Bright == 0 || Bright == 3 )
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 3 ];
                    }
                    if ( Aleft == 1 && ( !ahead[ i ] ) )
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 0 ];
                        }
                    if ( Aleft == 2 && ( !ahead[ i ] ) )
                        if ( !poisonright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 1 ];
                        }
                    if ( Aleft == 3 && ( !ahead[ i ] ) )
                        if ( Bright == 0 || Bright == 3 )
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i -1 ][ j ][ 0 ][ 1 ][ 3 ];
                    if ( Bleft == 0 && ( !back[ i ] ) )
                    {
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 0 ];
                        }
                        if ( !poisonright )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 1 ];
                        }
                        if ( Aright == 0 || Aright == 3 )
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 2 ];
                    }
                    if ( Bleft == 1 && ( !back[ i ] ) )
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 0 ];
                        }
                    if ( Bleft == 2 && ( !back[ i ] ) )
                        if ( !poisonright )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 1 ];
                        }
                    if ( Bleft == 3 && ( !back[ i ] ) )
                        if ( Aright == 0 || Aright == 3 )
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 2 ];
                }
            }
            if ( safe[ i ] == 1 )
            {
                if ( j )
                {
                    if ( !wineleft )
                    {
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 0 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 1 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 1 ][ 0 ];
                            f[ i ][ j ][ 0 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 0 ][ 0 ];
                        }
                        if ( Aright == 1 || Aright == 0 )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 0 ][ 2 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 1 ][ 2 ];
                        }
                        if ( Bright == 1 || Bright == 0 )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 1 ][ 3 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 1 ][ 3 ];
                        }
                    }
                    f[ i ][ j ][ 0 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 0 ][ 1 ];
                    f[ i ][ j ][ 1 ][ 0 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 0 ][ 1 ];
                    f[ i ][ j ][ 0 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 0 ][ 1 ][ 1 ];
                    f[ i ][ j ][ 1 ][ 1 ][ 0 ] |= f[ i - 1 ][ j - 1 ][ 1 ][ 1 ][ 1 ];
                }
                if ( j != i )
                {
                    if ( Aleft == 0 && ( !ahead[ i ] ) )
                    {
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 0 ];
                        }
                        if ( !poisonright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 1 ];
                        }
                        if ( Bright == 0 || Bright == 3 )
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 3 ];
                    }
                    if ( Aleft == 1 && ( !ahead[ i ] ) )
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 0 ];
                        }
                    if ( Aleft == 2 && ( !ahead[ i ] ) )
                        if ( !poisonright )
                        {
                            f[ i ][ j ][ 1 ][ 0 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 1 ];
                        }
                    if ( Aleft == 3 && ( !ahead[ i ] ) )
                        if ( Bright == 0 || Bright == 3 )
                            f[ i ][ j ][ 1 ][ 1 ][ 2 ] |= f[ i -1 ][ j ][ 0 ][ 1 ][ 3 ];
                    if ( Bleft == 0 && ( !back[ i ] ) )
                    {
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 0 ];
                        }
                        if ( !poisonright )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 1 ];
                        }
                        if ( Aright == 0 || Aright == 3 )
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 2 ];
                    }
                    if ( Bleft == 1 && ( !back[ i ] ) )
                        if ( !wineright )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 0 ];
                        }
                    if ( Bleft == 2 && ( !back[ i ] ) )
                        if ( !poisonright )
                        {
                            f[ i ][ j ][ 0 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 1 ];
                        }
                    if ( Bleft == 3 && ( !back[ i ] ) )
                        if ( Aright == 0 || Aright == 3 )
                            f[ i ][ j ][ 1 ][ 1 ][ 3 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 2 ];
                }
            }
            if ( safe[ i ] == 2 )
            {
                if ( j != i )
                {
                    if ( !poisonleft )
                    {
                        if ( !poisonright )
                        {
                            if ( m >= i - j - 1 )
                            {
                                f[ i ][ j ][ 1 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 1 ];
                                f[ i ][ j ][ 0 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 1 ];
                            }
                            if ( m >= i - j - 2 )
                                f[ i ][ j ][ 1 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 1 ][ 1 ];
                            if ( m >= i - j )
                                f[ i ][ j ][ 0 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 1 ];
                        }
                        if ( Aright == 0 || Aright == 2 )
                        {
                            if ( m >= i - j - 1 )
                                f[ i ][ j ][ 1 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 2 ];
                            if ( m >= i - j - 2 )
                                f[ i ][ j ][ 1 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 1 ][ 2 ];
                        }
                        if ( Bright == 0 || Bright == 2 )
                        {
                            if ( m >= i - j - 1 )
                                f[ i ][ j ][ 0 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 3 ];
                            if ( m >= i - j - 2 )
                                f[ i ][ j ][ 1 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 1 ][ 3 ];
                        }
                    }
                    if ( m >= i - j )
                        f[ i ][ j ][ 0 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 0 ][ 0 ];
                    if ( m >= i - j - 1 )
                    {
                        f[ i ][ j ][ 1 ][ 0 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 0 ][ 0 ];
                        f[ i ][ j ][ 0 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 0 ][ 1 ][ 0 ];
                    }
                    if ( m >= i - j - 2 )
                        f[ i ][ j ][ 1 ][ 1 ][ 1 ] |= f[ i - 1 ][ j ][ 1 ][ 1 ][ 0 ];
                }
            }
        }
    }
}

void dfs( int i, int j, int p1, int p2, int pos )
{
    if ( visit[ i ][ j ][ p1 ][ p2 ][ pos ] )
        return ;
    if ( !f[ i ][ j ][ p1 ][ p2 ][ pos ] )
        return ;
    if ( !i )
        return ;
    visit[ i ][ j ][ p1 ][ p2 ][ pos ] = true;
    if ( pos == 0 )
    {
        if ( safe[ i - 1 ] == 0 )
        {
            if ( j - 1 && wineright == 0 && wineleft == 0 )
                dfs( i - 1, j - 1, p1, p2, 0 );
            dfs( i - 1, j - 1, p1, p2, 1 );
            if ( wineleft == 0 && ( Aright == 0 || Aright == 1 ) && p1 && ahead[ i - 1 ] == 0 )
                dfs( i - 1, j - 1, p1, p2, 2 );
            if ( wineleft == 0 && ( Bright == 0 || Bright == 1 ) && p2 && back[ i - 1 ] == 0 )
                dfs( i - 1, j - 1, p1, p2, 3 );
        }
        if ( safe[ i - 1 ] == 1 )
        {
            if ( j - 1 && wineright == 0 && wineleft == 0 )
                dfs( i - 1, j - 1, p1, p2, 0 );
            if ( wineleft == 0 && ( Aright == 0 || Aright == 1 ) && p1 && ahead[ i - 1 ] == 0 )
                dfs( i - 1, j - 1, p1, p2, 2 );
            if ( wineleft == 0 && ( Bright == 0 || Bright == 1 ) && p2 && back[ i - 1 ] == 0 )
                dfs( i - 1, j - 1, p1, p2, 3 );
        }
        if ( safe[ i - 1 ] == 2 )
            dfs( i - 1, j - 1, p1, p2, 1 );
    }
    if ( pos == 1 )
    {
        if ( safe[ i - 1 ] == 0 )
        {
            if ( j )
                dfs( i - 1, j, p1, p2, 0 );
            if ( i > j )
            {
                if ( poisonright == 0 && poisonleft == 0 )
                    dfs( i - 1, j, p1, p2, 1 );
                if ( poisonleft == 0 && ( Aright == 0 || Aright == 2 ) && p1 && ahead[ i - 1 ] == 0 )
                    dfs( i - 1, j, p1, p2, 2 );
                if ( poisonleft == 0 && ( Bright == 0 || Bright == 2 ) && p2 && back[ i - 1 ] == 0 )
                    dfs( i - 1, j, p1, p2, 3 );
            }
        }
        if ( safe[ i - 1 ] == 1 )
        {
            if ( j )
                dfs( i - 1, j, p1, p2, 0 );
            if ( i > j )
            {
                if ( poisonleft == 0 && ( Aright == 0 || Aright == 2 ) && p1 && ahead[ i - 1 ] == 0 )
                    dfs( i - 1, j, p1, p2, 2 );
                if ( poisonleft == 0 && ( Bright == 0 || Bright == 2 ) && p2 && back[ i - 1 ] == 0 )
                    dfs( i - 1, j, p1, p2, 3 );
            }
        }
        if ( safe[ i - 1 ] == 2 )
            if ( i > j && poisonright == 0 && poisonleft == 0 )
                dfs( i - 1, j, p1, p2, 1 );
    }
    if ( pos == 2 )
    {
        if ( A != i && A )
            more = true;
        A = i;
        if ( safe[ i - 1 ] == 0 )
        {
            if ( j && ( Aleft == 0 || Aleft == 1 ) && wineright == 0 )
                dfs( i - 1, j, 0, p2, 0 );
            if ( i > j )
            {
                if ( ( Aleft == 0 || Aleft == 3 ) && ( Bright == 0 || Bright == 3 ) && p2 && back[ i - 1 ] == 0 )
                    dfs( i - 1, j, 0, p2, 3 );
                if ( ( Aleft == 0 || Aleft == 2 ) && poisonright == 0 )
                    dfs( i - 1, j, 0, p2, 1 );
            }
        }
        if ( safe[ i - 1 ] == 1 )
        {
            if ( j && ( Aleft == 0 || Aleft == 1 ) && wineright == 0 )
                dfs( i - 1, j, 0, p2, 0 );
            if ( i > j )
                if ( ( Aleft == 0 || Aleft == 3 ) && ( Bright == 0 || Bright == 3 ) && p2 && back[ i - 1 ] == 0 )
                    dfs( i - 1, j, 0, p2, 3 );
        }
        if ( safe[ i - 1 ] == 2 )
            if ( i > j && ( Aleft == 0 || Aleft == 2 ) && poisonright == 0 )
                dfs( i - 1, j, 0, p2, 1 );
    }
    if ( pos == 3 )
    {
        if ( B != i && B )
            more = true;
        B = i;
        if ( safe[ i - 1 ] == 0 )
        {
            if ( j && ( Bleft == 0 || Bleft == 1 ) && wineright == 0 )
                dfs( i - 1, j, p1, 0, 0 );
            if ( i > j )
            {
                if ( ( Bleft == 0 || Bleft == 3 ) && ( Aright == 0 || Aright == 3 ) && p1 && ahead[ i - 1 ] == 0 )
                    dfs( i - 1, j, p1, 0, 2 );
                if ( ( Bleft == 0 || Bleft == 2 ) && poisonright == 0 )
                    dfs( i - 1, j, p1, 0, 1 );
            }
        }
        if ( safe[ i - 1 ] == 1 )
        {
            if ( j && ( Bleft == 0 || Bleft == 1 ) && wineright == 0 )
                dfs( i - 1, j, p1, 0, 0 );
            if ( i > j )
                if ( ( Bleft == 0 || Bleft == 3 ) && ( Aright == 0 || Aright == 3 ) && p1 && ahead[ i - 1 ] == 0 )
                    dfs( i - 1, j, p1, 0, 2 );
        }
        if ( safe[ i - 1 ] == 2 )
            if ( i > j && ( Bleft == 0 || Bleft == 2 ) && poisonright == 0 )
                dfs( i - 1, j, p1, 0, 1 );
    }
}


void print( )
{
    bool count = 0;
    if ( !wineright )
        count |= f[ n + m + 2 ][ n ][ 1 ][ 1 ][ 0 ];
    if ( !poisonright )
        count |= f[ n + m + 2 ][ n ][ 1 ][ 1 ][ 1 ];
    if ( !Aleft )
        count |= f[ n + m + 2 ][ n ][ 1 ][ 1 ][ 2 ];
    if ( !Bleft )
        count |= f[ n + m + 2 ][ n ][ 1 ][ 1 ][ 3 ];
    if ( !count )
    {
        puts("That's impossible.");
        return ;
    }
    else
    {
        memset( visit, 0, sizeof( visit ) );
        more = A = B = 0;
        if ( !wineright )
            if ( f[ n + m + 2 ][ n ][ 1 ][ 1 ][ 0 ] )
                dfs( n + m + 2, n, 1, 1, 0 );
        if ( !poisonright )
            if ( f[ n + m + 2 ][ n ][ 1 ][ 1 ][ 1 ] )
                dfs( n + m + 2, n, 1, 1, 1 );
        if ( !Aleft )
            if ( f[ n + m + 2 ][ n ][ 1 ][ 1 ][ 2 ] )
                dfs( n + m + 2, n, 1, 1, 2 );
        if ( !Bleft )
            if ( f[ n + m + 2 ][ n ][ 1 ][ 1 ][ 3 ] )
                dfs( n + m + 2, n, 1 ,1, 3 );
    }
    if ( more )
        puts("God help them.");
    else
        printf("%d %d\n", A, B);
}

int main( )
{
    while ( scanf("%d%d%d", &n, &m, &p) != EOF )
    {
        init( );
        if ( impossible )
        {
            puts("That's impossible.");
            continue;
        }
        work( );
        print( );
    }
    return 0;
}
